#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include<iostream> 
using namespace std;
typedef struct node{
   int data;
   struct node *next;
}ListNode;
typedef ListNode *List;
void CreateList(List &L,int n);
void ReverseList(List &L);
void PrintList(List L);

int main()
{
       int n;
      List L;
      cin>>n;
     CreateList(L,n);
     ReverseList(L);
    PrintList(L);

 } 
  void CreateList(List &L,int n)
 {
 	L=new ListNode;
 	List p,q;
 	p=L;
 	for(int i=0;i<n;i++)
 	{
 		q=new ListNode;
 		cin >>q->data;
 		p->next=q;
 		p=q;
	 }
	 p->next=NULL;
 }
 void ReverseList(List &L)
 {
 	List p,q;
 	p=L->next;
 	L->next=NULL;
 	while(p)
 	{
 		q=p;
 		p=p->next;
 		q->next=L->next;
 		L->next=q;
	 }
 }
 void PrintList(List L)
 {
 	List p;
 	p=L->next;
 	if(p==NULL)
 	{
 		cout <<"NULL";
	 }
	 else
	 {
	 	while(p->next)
 	{
 		cout <<p->data<<" ";
 		p=p->next;
	 }
 	cout <<p->data;
	 }
 	
 }
